package planes;

import java.awt.Point;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

import weaponrelated.*;
import GAME.game;
/**
 * Clase que modela el enemigo final.
 */
public class boss extends enemy{
	int stage;
	public boss(game g){
		this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("resources/boss.png")));
		down=false;
		up=false;
		right=false;
		left=true;		
		game=g;
		arma=new bossweapon(game,this);
		hp=3000;
		points=1000;
		vel=1;
		this.setBounds(0, 0, 160, 145);
		stage=1;
		
	}
	/**
	 * Metodo mata al malo final.
	 */
	public void kill(){
		hp=0;
		Thread aux=new animacionexpboss(this,game);
		aux.start();
		aux=null;
		arma=null;
		game.getplayer().kill();
		game.endgame();
		//aca se hace la animacion de kill
		
	}
	/**
	 * Metodo que simula el movimiento del enemigo final.
	 */
	public void mover() {
		if(this.getY()<0){
			this.setLocation(new Point(this.getX(),this.getY()+1));
		}
		
		if (hp<1000 && stage!=2){ //si le quedan menos de 1000 de vida y aun no se debilito, el avion se debilita y cambia de imagen
			stage=2;
			
			for(int i=0;i<8;i++){
			JLabel exp=new JLabel();
			game.getpanel().add(exp);
			exp.setBounds(this.getX()+i*20,this.getY()+this.getHeight()-40,40,40);
			animacionexp a=new animacionexp(exp,game);
			a.start();
			}
			this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("resources/bossroto.png")));
		}
		if(stage==2){ //si el malo final esta debilitado, entran aviones kamikaze al juego de manera aleatoria
			int numAleatorio = (int) (Math.random()*30+1);
			if(numAleatorio==1){
				game.insertkamikaze(new kamikaze(game));
			}
			
		}
		Point pos=new Point(this.getX(),this.getY());
		if(left && !up && !right && !down){ // mov izquierda
			if(pos.getX()>0){			
				int v = pos.x - 1;
				pos.setLocation(v, pos.y);
			}
		else{
			left=false;
			right=true;
		}
		}
		if(right && !up && !down && !left){ // mov derecha
			if(pos.getX()<(game.getWidth()-25)){
			
				int v = pos.x + 1;
				pos.setLocation(v, pos.y);
				}
			else{
					left=true;
					right=false;
					}
				
		}
		this.setLocation(pos);
		int aux= (int) (Math.random()*5+1);
		if(aux==1)
		arma.enemyshoot();
		
		
	
	}
}
